home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- # Generate config, start/stop caching DNS service
-
- . /etc/system.cfg
- . /etc/chat.pwd
- . /etc/live.cfg
-
- HST=/etc/hosts
- RSLV=/etc/resolv.conf
-
- fn2() { ps | sed -n '/ dnsmasq/P'; }
- stp() {
- [ "`fn2`" ] || return
- echo -n "Stopping DNS... "
- killall dnsmasq -15
- =
- }
-
- str() {
- [ "`fn2`" ] && exit
- echo "domain $DOMAIN" >/$RSLV
- echo "255.255.255.255 broadcast all-in-one" >$HST
- if [ "$ENADNS" != n ]; then
- echo "127.0.0.1 localhost" >$HST
- echo "nameserver 127.0.0.1" >>/$RSLV
- for i in 0 1 2 3 4 5 6 7 8 9; do
- eval a=\$IPADDR$i
- if [ "$a" ]; then
- echo "$a $HOSTNAME.$DOMAIN $HOSTNAME" >>$HST
- fi
- done
- cat /boot/etc/dns.cfg | sed '/^$/d;/^\#/d' >>$HST 2>/dev/null
- if [ "$ENADHCP" != n ]; then
- IP=`cat /boot/etc/dhcp.cfg | sed '/^\#/d;s/host\ //;s/{/,/;s/fixed\-address\ //;/hardware\ ethernet\ /d;/}/d;s/\ / /g;s/$//g'`
- STATICIP=`echo $IP | sed 's/\ //g;s/\;/\ /g'`
- if [ "$STATICIP" ]; then
- for i in $STATICIP; do
- set -- `echo $i | sed 's/,/\ /g'`
- echo "$2 $1.$DOMAIN $1" >>$HST
- done
- fi
- c="-l /etc/dhcpd.leases"
- fi
- echo -n "Starting DNS... "
- if [ "$DNSADDR" ]; then
- b="-S $DNSADDR"
- DNSCACHE=${DNSCACHE:-500}
- CACHE="-c $DNSCACHE"
- [ "$DNSADDR1" ] && b="$b -S $DNSADDR1"
- if [ "$LOGDNS" = y -o "$BOOTMOD" = debug ]
- then dnsmasq -Rnbqf $b $c -s $DOMAIN $CACHE
- else dnsmasq -Rnbf $b $c -s $DOMAIN $CACHE
- fi
- = $?
- else
- = 1 "$CR No server set$CW"
- fi
- else
- echo "nameserver $DNSADDR" >>/$RSLV
- [ "$DNSADDR1" ] && echo "nameserver $DNSADDR1" >>/$RSLV
- fi
- }
-
- case "$1" in
- start) str;;
- stop) stp; [ "`fn2`" ] && stp;;
- restart|newip) stp; str;;
- status) if [ "`fn2`" ]
- then echo "Running dnsmasq:"; fn2
- PID=`cat /var/dnsmasq.pid`
- kill -10 $PID
- else echo No running dnsmasq
- fi;;
- esac
-